package yl.hs.bmipfull.service.report;

import yl.hs.bmipfull.pojo.production.ProductionRecordEntity;
import yl.hs.bmipfull.viewmodels.PageQuery;
import yl.hs.bmipfull.viewmodels.report.ProductionRecordCostVO;
import yl.hs.bmipfull.viewmodels.report.ProductionSalesComparisonVO;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @apiNote  生产统计
 * @author 吴高丰
 */
public interface IProductionStatisticsService {
    /**
     * 获取商砼车辆发货分析接口
     * @param pageQuery 阐述map 集合
     * @return 结果集合
     */
    List<Object> vehicleDeliveryStatistics(PageQuery pageQuery,String productCateSn);


    /**
     * 查询生产销售对比信息
     * @param pageQuery 查询条件
     * @param  productCateSn  产品种类sn
     * @return 对比信息
     * @throws Exception 异常信息
     */
    List<ProductionSalesComparisonVO> queryProductionSalesComparison(PageQuery pageQuery,String productCateSn) throws Exception;

    /**
     *  查询产品消耗
     * @param pageQuery 查询条件
     * @param productCateSn 产品类别编号
     * @return 数据
     * @throws Exception 异常信息
     */
    List<Map<String,Object>> queryProductConsumption(PageQuery pageQuery, String productCateSn) throws Exception;
    Map<String,Object> queryProductLineConsumption(PageQuery pageQuery,String productCateSn) throws Exception;

    List<Object> querySaleAndProductionGroupDay(String startTime,String endTime,String productLineSN) throws ParseException;


    /**
     * 查询生产消耗成本分析信息
     * @param pageQuery 查询条件
     * @param productCateSn 产品类型
     * @return 执行结果
     */
    List<ProductionRecordCostVO> queryProductionRecordCost(PageQuery pageQuery,String productCateSn);

    List<ProductionRecordEntity>  mortarProductionRecord(String startTime, String endTime);


    List<Map<String,Object>> queryProjectProductionCost(PageQuery pageQuery, String productCateSn) ;

    List<Map<String,Object>> queryProjectShipSummary(String cateSN, Date startTime, Date endTime);

    List<Map<String,Object>> queryProjectDaySummary(String cateSN, String projectSN, Date strToDate, Date strToDate1);

    /**
     * 生产管理看板
     *
     * @param year
     * @param month
     * @return
     */
    Map<String, Object> getProductionBoardData(Integer year, Integer month);
}
